package com.jiangyg.mall.product.service;

import com.jiangyg.mall.product.dto.AttrAttrgroupDTO;
import com.jiangyg.mall.product.dto.AttrgroupDTO;
import com.jiangyg.mall.product.vo.AttrVO;
import com.jiangyg.mall.product.vo.AttrgroupVO;

import java.util.List;

/**
 * 类描述：属性分组
 *
 * @author jiangyg
 * @email email@jiangyg.com
 * @date 2021-10-18 22:25:29
 */
public interface AttrgroupService {

    /**
     * 功能描述：属性分组分页查询
     *
     * @param categoryId 分类ID
     * @return 返回分页信息
     */
    List<AttrgroupVO> selectList(String categoryId) throws Exception;

    /**
     * 功能描述：属性分组查询，附带分组下属性
     *
     * @param categoryId 分组ID
     * @return 返回分页属性分组
     */
    List<AttrgroupVO> listAttachAttr(Long categoryId) throws Exception;

    /**
     * 功能描述：保存或者修改属性分组
     *
     * @param dto 属性分组
     * @return 返回是否操作成功
     */
    boolean saveOrUpdate(AttrgroupDTO dto) throws Exception;

    /**
     * 功能描述：根据ID获取AttrGroup
     *
     * @param attrgroupId 属性分组ID
     * @return 返回属性分组
     */
    AttrgroupVO selectById(Long attrgroupId) throws Exception;

    /**
     * 功能描述：批量删除AttrGroup
     *
     * @param attrgroupIds 要删除的ID数组
     * @return 返回是否操作成功
     */
    boolean delete(List<Long> attrgroupIds);

    /**
     * 功能描述：属性分组和属性关联分页查询
     *
     * @param attrgroupId 分组ID
     * @return 返回分页属性分组
     */
    List<AttrVO> listRelation(Long attrgroupId) throws Exception;

    /**
     * 功能描述：分类下没有关联的属性
     *
     * @param categoryId  分类ID
     * @return 返回分页属性分组
     */
    List<AttrVO> listNotRelation(Long categoryId) throws Exception;

    /**
     * 功能描述：删除属性分组和属性关联
     *
     * @param dto     参数
     * @return 返回分页属性分组
     */
    boolean saveRelation(AttrAttrgroupDTO dto) throws Exception;

    /**
     * 功能描述：删除属性分组和属性关联
     *
     * @param dto 关系
     * @return 返回分页属性分组
     */
    boolean deleteRelation(AttrAttrgroupDTO dto);

}

